// 创建Set集合
// 空Set的创建
let fruits = new Set()
console.log("fruits:", fruits)
// fruits: Set(0) {}
let strings = new Set(['Hello', 'World'])
console.log("strings:", strings)
// strings: Set(2) { 'Hello', 'World' }

// 向Set中添加新的元素
strings.add('JavaScript')
strings.add('JavaScript')
// Set中的元素是唯一的
console.log("strings:", strings)
// strings: Set(3) { 'Hello', 'World', 'JavaScript' }

// 删除Set中的元素
strings.delete("Hello")
console.log("strings:", strings)
// strings: Set(2) { 'World', 'JavaScript' }

// 检查Set中是否包含指定元素
console.log("strings.has('JavaScript'):", strings.has('JavaScript'))
// strings.has('JavaScript'): true

// 获取Set的大小
console.log("strings.size:", strings.size)
// strings.size: 2

// 使用 Array.from() 方法将Set转换为数组
let arr = Array.from(strings)
console.log("arr:", arr)
// arr: [ 'World', 'JavaScript' ]

// 使用扩展运算符将Set转换为数组
let arr2 = [...strings]
console.log("arr2:", arr2)
// arr2: [ 'World', 'JavaScript' ]

// 扩展运算符是用于展开可迭代对象(如数组、字符串等)
let myName = "Dcsgo"
// 使用扩展运算符将字符串转化为数组
let nameArr = [...myName]
console.log("nameArr:", nameArr)
// nameArr: [ 'D', 'c', 's', 'g', 'o' ]

// 使用for...of遍历Set中的元素
console.log("items of strings:")
for (let item of strings) {
    console.log(item)
}
/*
items of strings:
World
JavaScript
*/

// 使用forEach方法遍历Set
console.log("items forEach of strings:")
strings.forEach(item => console.log(item))
/*
items forEach of strings:
World
JavaScript
*/

// 清空Set
strings.clear()
console.log("strings:", strings)
// strings: Set(0) {}

// 将数组转换成Set实现去重
let numbers = [1, 1, 2, 2, 3]
let numberSet = new Set(numbers)
console.log("numberSet:", numberSet)
// numberSet: Set(3) { 1, 2, 3 }